package com.lanou3g.code0413.stream;

import java.io.*;

/**
 * Created by dllo on 18/4/13.
 */


/*
*  字节流   内存到硬盘输出 硬盘到内存输入
*  装饰者模式
*
*  在使用io流的时候,一定要注意,使用完成后,需要关闭IO流,关闭的代码 必须写在finally中
*
* */
public class Main {
    public static void main(String[] args) {
        File file = new File("out.txt");
        // OutputStream 抽象类
        if (!file.exists()) {
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }

        FileOutputStream fos = null;
        try {

            //在输出流构造方法的第二个参数 传入true
            //代表写入的文件在原文件的后面添加
            fos = new FileOutputStream(file,true);    //第一个是抛出异常 ,第二个是try catch

            // '\'反斜杠叫做转义字符 ,把一个字符原有的含义抹杀,
            // 和\一同组成新的含义,例如\n表示换行
            // \t 表示tab键
            // \" 表示"
            String data = "Hello World:是打发斯蒂芬是打发斯蒂芬\n";

            //向文件中写数据
            //只能写字节类型的数据
            //字符串也需要转换成字节数组

            fos.write(data.getBytes());
        } catch (Exception e) {
            e.printStackTrace();
        } finally {  //关闭IO流
            if (fos!= null) {
                try {
                    fos.close();  //close()还是会抛异常,需要try catch
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
